package com.ruoyi.info.mapper;

import java.util.List;
import java.util.Map;

import com.ruoyi.info.domain.EnterpriseBase;
import io.lettuce.core.dynamic.annotation.Param;

/**
 * 企业基地Mapper接口
 * 
 * @author wangshi
 * @date 2023-06-06
 */
public interface EnterpriseBaseMapper 
{
    /**
     * 查询企业基地
     * 
     * @param id 企业基地主键
     * @return 企业基地
     */
    public EnterpriseBase selectEnterpriseBaseById(Long id);

    /**
     * 查询企业基地列表
     * 
     * @param enterpriseBase 企业基地
     * @return 企业基地集合
     */
    public List<EnterpriseBase> selectEnterpriseBaseList(EnterpriseBase enterpriseBase);

    /**
     * 新增企业基地
     * 
     * @param enterpriseBase 企业基地
     * @return 结果
     */
    public int insertEnterpriseBase(EnterpriseBase enterpriseBase);

    /**
     * 修改企业基地
     * 
     * @param enterpriseBase 企业基地
     * @return 结果
     */
    public int updateEnterpriseBase(EnterpriseBase enterpriseBase);

    /**
     * 删除企业基地
     * 
     * @param id 企业基地主键
     * @return 结果
     */
    public int deleteEnterpriseBaseById(Long id);

    /**
     * 批量删除企业基地
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteEnterpriseBaseByIds(Long[] ids);


    /**
     * 根据企业名称查询生产线总数
     * @return 生产线总数
     */
    public Integer selectSumProductionLine(@Param("name") String name);

    /**
     * 根据企业名称企业基地总数
     * @return 企业基地总数
     */
    public Integer selectCount(@Param("name") String name);

    /**
     * 根据企业名称企业基地 总产能
     * @return 企业基地总数
     */
    public Integer selectCountCapacity(@Param("name") String name);

    /**
     * 根据企业名称同比增长
     * @return 同比增长
     */
    public Double selectGrowth(@Param("name") String name);

    /**
     * 根据企业名称同比 增长还是减少
     * @return 同比结果
     */
    public Double selectGrowthResult(@Param("name") String name);

    /**
     * 生产基地年固定产能&满产产能趋势
     * @return 同比增长
     */
    public  List<Map<String,String>> selectCapacity(@Param("name") String name);

    /**
     * 企业供货产品类型分布&满产产能趋势
     * @return 同比增长
     */
    public List<Map<String,String>> selectProductTypeDistribution(@Param("name") String name);


    /**
     * 覆盖省级行政区域
     * @return
     */
    public int selectProvinceRegionCount();

    /**
     * 覆盖市级行政区域
     * @return
     */
    public int selectCityRegionCount();

    /**
     * 区域分布 情况
     * @return
     */
    public List<Map<String,Object>>  selectRegionDistribution();

    /**
     * 区域climecode分布  情况
     * @return
     */
    public List<Map<String,Object>>  selectRegionCodeDistribution();


    /**
     * 全国省份生产基地数量排名
     * @return 同比增长
     */
    public List<Map<String,String>> selectRanking(@Param("name") String name);
}
